์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ์ธํ๋ผ ๊ตฌ์ถ๊ณผ ์ต์ ํ ํ๋ ์์ํฌ ๊ตฌํ ์์ธ ๊ฐ์ด๋. ํต์ฌ ์งํ, ํด๋ง, ๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ์ํ ์ค์ ๊ตฌํ ์ ๋ต์ ๋ค๋ฃน๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ์ธํ๋ผ: ์ต์ ํ ํ๋ ์์ํฌ ๊ตฌํ
์ค๋๋ ๊ณผ ๊ฐ์ด ์ ์ธ๊ณ๊ฐ ์ฐ๊ฒฐ๋ ์ธ์์์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ๋ฌด์๋ณด๋ค ์ค์ํฉ๋๋ค. ๋๋ฆฐ ์น์ฌ์ดํธ๋ ์ฌ์ฉ์์ ๋ถ๋ง์ ์ฌ๊ณ , ์ฐธ์ฌ๋๋ฅผ ๋ฎ์ถ๋ฉฐ, ๊ถ๊ทน์ ์ผ๋ก๋ ์์ต ์์ค๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ์ต์ ํ๋ ๋จ์ํ ๊ธฐ์ ์ ์ธ ๋ฌธ์ ๋ฅผ ๋์ด ์ค์ํ ๋น์ฆ๋์ค ๊ณผ์ ์ ๋๋ค. ์ด ์ข ํฉ ๊ฐ์ด๋์์๋ ๋ค์ํ ๋คํธ์ํฌ ํ๊ฒฝ๊ณผ ๋๋ฐ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ์ ์ธ๊ณ ์ฌ์ฉ์์ ๋ง์ถฐ ๊ฐ๋ ฅํ ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ๊ณ ํจ๊ณผ์ ์ธ ์ต์ ํ ํ๋ ์์ํฌ๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ด ๋๋ค.
์ฑ๋ฅ ์ธํ๋ผ์ ์ค์์ฑ ์ดํดํ๊ธฐ
์ฑ๋ฅ ์ธํ๋ผ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์ ์ฑ๋ฅ์ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋ง, ๋ถ์, ๊ฐ์ ํ๊ธฐ ์ํด ์ค๊ณ๋ ๋๊ตฌ, ํ๋ก์ธ์ค, ์ ๋ต์ ์งํฉ์ ๋๋ค. ์ด๋ ์ผํ์ฑ ํด๊ฒฐ์ฑ ์ด ์๋๋ผ, ํ์ ์ ์ธ ์ ๊ทผ์ด ํ์ํ ์ง์์ ์ธ ๋ ธ๋ ฅ์ ๋๋ค. ์ ์ค๊ณ๋ ์ธํ๋ผ๋ ๋ค์์ ์ ๊ณตํฉ๋๋ค:
- ๊ฐ์์ฑ: ๋ค์ํ ํ๊ฒฝ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง์ ๋ํ ์ค์๊ฐ ํต์ฐฐ๋ ฅ.
- ์คํ ๊ฐ๋ฅํ ๋ฐ์ดํฐ: ๊ฐ์ ์ด ํ์ํ ํน์ ์์ญ์ ์ ํํ ์ฐพ์๋ด๋ ์งํ.
- ์๋ํ๋ ํ ์คํธ: ์ฑ๋ฅ ์ ํ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ๊ธฐ ์ํ ์ง์์ ์ธ ์ฑ๋ฅ ํ ์คํธ.
- ๋ ๋น ๋ฅธ ์ดํฐ๋ ์ด์ : ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ ์ํ๊ฒ ํ ์คํธํ๊ณ ๋ฐฐํฌํ๋ ๋ฅ๋ ฅ.
๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ์ํ ํต์ฌ ์ฑ๋ฅ ์งํ
์ฌ๋ฐ๋ฅธ ์งํ๋ฅผ ์ ํํ๋ ๊ฒ์ ๊ธ๋ก๋ฒ ๊ด์ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ์ดํดํ๋ ๋ฐ ํ์์ ์ ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ํต์ฌ ์งํ๋ฅผ ๊ณ ๋ คํ์ญ์์ค:
- ์ต์ด ์ฝํ ์ธ ํ ํ์ธํธ (FCP): ํ๋ฉด์ ์ฒซ ๋ฒ์งธ ์ฝํ ์ธ (ํ ์คํธ, ์ด๋ฏธ์ง ๋ฑ)๊ฐ ๋ํ๋๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ. FCP๊ฐ ๋น ๋ฅผ์๋ก ์ฌ์ฉ์๋ ์ด๊ธฐ ์งํ ์ํฉ์ ์ธ์งํ ์ ์์ต๋๋ค.
- ์ต๋ ์ฝํ ์ธ ํ ํ์ธํธ (LCP): ๊ฐ์ฅ ํฐ ์ฝํ ์ธ ์์๊ฐ ํ์๋๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ. ์ด ์งํ๋ ์ฒด๊ฐ ๋ก๋ฉ ์๋๋ฅผ ๋ ์ ๋ํ๋ ๋๋ค.
- ์ต์ด ์ ๋ ฅ ์ง์ฐ (FID): ๋ธ๋ผ์ฐ์ ๊ฐ ์ฒซ ๋ฒ์งธ ์ฌ์ฉ์ ์ํธ์์ฉ(์: ํด๋ฆญ ๋๋ ํญ)์ ์๋ตํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ. FID๊ฐ ๋ฎ์ผ๋ฉด ๋ฐ์์ฑ์ด ์ข์ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํฉ๋๋ค.
- ๋์ ๋ ์ด์์ ์ด๋ (CLS): ํ์ด์ง์ ์๊ฐ์ ์์ ์ฑ์ ์ธก์ ํฉ๋๋ค. ์๊ธฐ์น ์์ ๋ ์ด์์ ์ด๋์ ์ฌ์ฉ์์๊ฒ ๋ถํธํจ์ ์ค ์ ์์ต๋๋ค.
- ์ํธ์์ฉ๊น์ง์ ์๊ฐ (TTI): ํ์ด์ง๊ฐ ์์ ํ ์ํธ์์ฉ ๊ฐ๋ฅํด์ง ๋๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ.
- ์ด ์ฐจ๋จ ์๊ฐ (TBT): ํ์ด์ง ๋ก๋ ์ค ๋ฉ์ธ ์ค๋ ๋๊ฐ ์ฐจ๋จ๋์ด ์ฌ์ฉ์ ์ํธ์์ฉ์ ๋ง๋ ์๊ฐ์ ์ ๋ํํฉ๋๋ค.
- ํ์ด์ง ๋ก๋ ์๊ฐ: ํ์ด์ง๊ฐ ์์ ํ ๋ก๋๋๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์ด ์๊ฐ.
- ๋คํธ์ํฌ ์ง์ฐ ์๊ฐ: ๋คํธ์ํฌ ์์ฒญ์ ์๋ณต ์๊ฐ(RTT). ์ด๋ ๋ค๋ฅธ ์ง์ญ์ ์๋ ์ฌ์ฉ์์๊ฒ ํนํ ์ค์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํธ์ฃผ ์ฌ์ฉ์๋ ๋ถ๋ฏธ ์ฌ์ฉ์๋ณด๋ค ๋ ๋์ ์ง์ฐ ์๊ฐ์ ๊ฒฝํํ ์ ์์ต๋๋ค.
- ๋ฆฌ์์ค ํฌ๊ธฐ ๋ฐ ๋ค์ด๋ก๋ ์๊ฐ: ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ, ์ด๋ฏธ์ง ๋ฐ ๊ธฐํ ์์ฐ์ ํฌ๊ธฐ์ ๋ค์ด๋ก๋ ์๊ฐ. ์ด๋ฌํ ๋ฆฌ์์ค๋ฅผ ์ต์ ํํ์ฌ ๋ก๋ ์๊ฐ์ ์ค์ด์ธ์.
๊ธ๋ก๋ฒ ๊ณ ๋ ค์ฌํญ: ์ด๋ฌํ ์งํ๋ฅผ ๋ชจ๋ํฐ๋งํ ๋ ์ง์ญ, ๊ธฐ๊ธฐ ์ ํ, ๋คํธ์ํฌ ์กฐ๊ฑด๋ณ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฅํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ํน์ ์ฌ์ฉ์ ์ธ๊ทธ๋จผํธ์ ๊ตญํ๋ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ ํฅ ์์ฅ์ 3G ๋คํธ์ํฌ ์ฌ์ฉ์๋ ์ ์ง๊ตญ์ ๊ณ ์ ๊ด์ฌ์ ์ฐ๊ฒฐ ์ฌ์ฉ์๋ณด๋ค ํจ์ฌ ๋๋ฆฐ ๋ก๋ ์๊ฐ์ ๊ฒฝํํ ์ ์์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ์ธํ๋ผ ๊ตฌ์ถํ๊ธฐ
๊ฒฌ๊ณ ํ ์ฑ๋ฅ ์ธํ๋ผ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์ ๊ตฌ์ฑ ์์๋ก ์ด๋ฃจ์ด์ง๋๋ค:1. ์ค์ ์ฌ์ฉ์ ๋ชจ๋ํฐ๋ง (RUM)
RUM์ ์ค์ ์ฌ์ฉ์์ ์์์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง์ ๋ํ ์ค์๊ฐ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํฉ๋๋ค. ํ์ด์ง ๋ก๋ ์๊ฐ, ์ค๋ฅ, ์ฌ์ฉ์ ์ํธ์์ฉ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์์งํ์ฌ ํต์ ๋ ํ ์คํธ ํ๊ฒฝ์์๋ ๋ช ํํ์ง ์์ ์ ์๋ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์๋ณํ ์ ์๊ฒ ํด์ค๋๋ค. ์ธ๊ธฐ ์๋ RUM ๋๊ตฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- New Relic: ์์ธํ ์ฑ๋ฅ ๋ฐ์ดํฐ์ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ๋ ํฌ๊ด์ ์ธ ๋ชจ๋ํฐ๋ง ํ๋ซํผ์ ๋๋ค.
- Datadog: ์ ํ๋ฆฌ์ผ์ด์ , ์ธํ๋ผ, ๋ก๊ทธ๋ฅผ ์ํ ํด๋ผ์ฐ๋ ๊ท๋ชจ์ ๋ชจ๋ํฐ๋ง ์๋น์ค์ ๋๋ค.
- Sentry: ์ค๋ฅ ์ถ์ ๋ฐ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง ํ๋ซํผ์ ๋๋ค.
- Google Analytics: ์ฃผ๋ก ๋ถ์์ ์ค์ ์ ๋์ง๋ง, Google Analytics๋ ์ฌ์ดํธ ์๋ ๋ณด๊ณ ์๋ฅผ ํตํด ์ ์ฉํ ์ฑ๋ฅ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ ์๋ ์์ต๋๋ค. ๊ฐ๊ด์ ์ธ ๋ด์ฉ์ ํ์ ํ๊ธฐ ์ํด Google Analytics๋ฅผ ์ฌ์ฉํ๋, ์์ธํ ํต์ฐฐ๋ ฅ์ ์ป์ผ๋ ค๋ฉด ๋ ์ ๋ฌธํ๋ RUM ๋๊ตฌ๋ก ๋ณด์ํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์.
- Cloudflare Web Analytics: ์ฑ๋ฅ ์งํ๋ฅผ ํฌํจํ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ์ค์ฌ์ ์น ๋ถ์ ๋๊ตฌ์ ๋๋ค.
์์: ์ ์์๊ฑฐ๋ ์น์ฌ์ดํธ์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ์ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. RUM ๋ฐ์ดํฐ์ ๋ฐ๋ฅด๋ฉด ๋จ๋ฏธ ์ฌ์ฉ์๋ค์ด ๋ถ๋ฏธ ์ฌ์ฉ์๋ค๋ณด๋ค ํจ์ฌ ๋๋ฆฐ ๋ก๋ ์๊ฐ์ ๊ฒฝํํ๊ณ ์์ต๋๋ค. ์ด๋ ๋คํธ์ํฌ ์ง์ฐ ์๊ฐ, CDN ๊ตฌ์ฑ ๋ฌธ์ ๋๋ ์๋ฒ ์ธก ๋ณ๋ชฉ ํ์ ๋๋ฌธ์ผ ์ ์์ต๋๋ค. RUM์ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ๋ฌธ์ ๊ฐ ๋ง์ ์ฌ์ฉ์์๊ฒ ์ํฅ์ ๋ฏธ์น๊ธฐ ์ ์ ์ ์ํ๊ฒ ์๋ณํ๊ณ ํด๊ฒฐํ ์ ์์ต๋๋ค.
2. Synthetic ๋ชจ๋ํฐ๋ง
Synthetic ๋ชจ๋ํฐ๋ง์ ํต์ ๋ ํ๊ฒฝ์์ ์ฌ์ฉ์ ์ํธ์์ฉ์ ์๋ฎฌ๋ ์ด์ ํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ค์ ์ฌ์ฉ์์๊ฒ ์ํฅ์ ๋ฏธ์น๊ธฐ ์ ์ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ฌ์ ์ ์๋ณํ ์ ์์ต๋๋ค. Synthetic ๋ชจ๋ํฐ๋ง์ ํนํ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค:
- ํ๊ท ํ ์คํธ: ์๋ก์ด ์ฝ๋ ๋ณ๊ฒฝ์ด ์ฑ๋ฅ ์ ํ๋ฅผ ์ผ์ผํค์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ํ๋ก๋์ ์ ํ ์คํธ: ํ๋ก๋์ ์ ๋ฐฐํฌํ๊ธฐ ์ ์ ์ฑ๋ฅ์ ๊ฒ์ฆํฉ๋๋ค.
- ์ฑ๋ฅ ๊ธฐ์ค์ : ์ฑ๋ฅ์ ๋ํ ๊ธฐ์ค์ ์ ์ค์ ํ๊ณ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ๋ณํ๋ฅผ ์ถ์ ํฉ๋๋ค.
์ธ๊ธฐ ์๋ Synthetic ๋ชจ๋ํฐ๋ง ๋๊ตฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- WebPageTest: ์น์ฌ์ดํธ ์ฑ๋ฅ ํ ์คํธ๋ฅผ ์ํ ๋ฌด๋ฃ ์คํ์์ค ๋๊ตฌ์ ๋๋ค.
- Lighthouse: ์น ํ์ด์ง์ ํ์ง์ ๊ฐ์ ํ๊ธฐ ์ํ ์คํ์์ค ์๋ํ ๋๊ตฌ์ ๋๋ค. ์ฑ๋ฅ, ์ ๊ทผ์ฑ, ํ๋ก๊ทธ๋ ์๋ธ ์น ์ฑ, SEO ๋ฑ์ ๋ํ ๊ฐ์ฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- PageSpeed Insights: ์น ํ์ด์ง์ ์๋๋ฅผ ๋ถ์ํ๊ณ ๊ฐ์ ๊ถ์ฅ ์ฌํญ์ ์ ๊ณตํ๋ ๊ตฌ๊ธ์ ๋๊ตฌ์ ๋๋ค.
- SpeedCurve: ๊ณ ๊ธ ๊ธฐ๋ฅ๊ณผ ๋ณด๊ณ ๊ธฐ๋ฅ์ ๊ฐ์ถ ์์ฉ Synthetic ๋ชจ๋ํฐ๋ง ๋๊ตฌ์ ๋๋ค.
- GTmetrix: ๋ ๋ค๋ฅธ ์ธ๊ธฐ ์๋ ์น ์ฑ๋ฅ ๋ถ์ ๋๊ตฌ์ ๋๋ค.
์์: Lighthouse๋ฅผ ์ฌ์ฉํ์ฌ ์น์ฌ์ดํธ์ ์ฑ๋ฅ์ ์๋์ผ๋ก ๊ฐ์ฌํ๊ณ ๊ฐ์ ๊ธฐํ๋ฅผ ์๋ณํ ์ ์์ต๋๋ค. Lighthouse๋ ์ต์ ํ๋์ง ์์ ์ด๋ฏธ์ง, ๋ ๋๋ง ์ฐจ๋จ ๋ฆฌ์์ค ๋๋ ๋นํจ์จ์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
3. ์ฑ๋ฅ ์์ฐ ์ค์
์ฑ๋ฅ ์์ฐ์ ํ์ด์ง ๋ก๋ ์๊ฐ, ๋ฆฌ์์ค ํฌ๊ธฐ, HTTP ์์ฒญ ์์ ๊ฐ์ ํต์ฌ ์ฑ๋ฅ ์งํ์ ๋ํ ํ๋๋ฅผ ์ค์ ํ๋ ๊ฒ์ ๋๋ค. ์ด๋ ๊ฐ๋ฐ ๊ณผ์ ์ ๋ฐ์ ๊ฑธ์ณ ์ฑ๋ฅ์ด ์ฐ์ ์์๋ก ์ ์ง๋๋๋ก ๋์ต๋๋ค. Lighthouse๋ Webpack ํ๋ฌ๊ทธ์ธ๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ ์์ฐ์ ๊ฐ์ ํ ์ ์์ต๋๋ค. ์ฑ๋ฅ ์์ฐ์ ์ด๊ณผํ๋ฉด ๋น๋๊ฐ ์๋์ผ๋ก ์คํจํ๋๋ก CI/CD ํ์ดํ๋ผ์ธ์ ์ง์ ํตํฉ๋๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์.
์์: LCP์ 2์ด, ์ด ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ ํฌ๊ธฐ์ 1MB์ ์ฑ๋ฅ ์์ฐ์ ์ค์ ํ ์ ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด ํ๋๋ฅผ ์ด๊ณผํ๋ฉด, ์์ธ์ ์กฐ์ฌํ๊ณ ์ต์ ํํ ์์ญ์ ์ฐพ์์ผ ํฉ๋๋ค.
4. ์ฝ๋ ๋ถ์ ๋๊ตฌ
์ฝ๋ ๋ถ์ ๋๊ตฌ๋ ๋นํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ, ๋ฉ๋ชจ๋ฆฌ ๋์, ์ฌ์ฉ๋์ง ์๋ ์ฝ๋ ๋ฑ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์ ์ ์ฌ์ ์ธ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ์ธ๊ธฐ ์๋ ์ฝ๋ ๋ถ์ ๋๊ตฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ESLint: ์ฝ๋ฉ ํ์ค์ ๊ฐ์ ํ๊ณ ์ ์ฌ์ ์ธ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์๋ณํ๋ ๋ฐ ๋์์ด ๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฆฐํฐ์ ๋๋ค.
- SonarQube: ์ฝ๋ ํ์ง์ ์ง์์ ์ธ ๊ฒ์ฌ๋ฅผ ์ํ ์คํ์์ค ํ๋ซํผ์ ๋๋ค.
- Webpack Bundle Analyzer: Webpack ๋ฒ๋ค์ ํฌ๊ธฐ์ ๊ตฌ์ฑ์ ์๊ฐํํ์ฌ ํฐ ์์กด์ฑ๊ณผ ๋ถํ์ํ ์ฝ๋๋ฅผ ์๋ณํ๋ ๋ฐ ๋์์ ์ฃผ๋ ๋๊ตฌ์ ๋๋ค.
์์: ESLint๋ ๋ฐฐ์ด์ `for...in` ๋ฃจํ๋ฅผ ์ฌ์ฉ(์ ํต์ ์ธ `for` ๋ฃจํ๋ณด๋ค ๋๋ฆด ์ ์์)ํ๊ฑฐ๋ ๋นํจ์จ์ ์ธ ๋ฌธ์์ด ์ฐ๊ฒฐ ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ ๋ฑ ์ ์ฌ์ ์ธ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ๊ฒฝ๊ณ ํ๋๋ก ์ค์ ํ ์ ์์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์ต์ ํ ํ๋ ์์ํฌ ๊ตฌํํ๊ธฐ
์ต์ ํ ํ๋ ์์ํฌ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ธฐ ์ํ ์ฒด๊ณ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ค์ ๋จ๊ณ๋ฅผ ํฌํจํฉ๋๋ค:
1. ์ฑ๋ฅ ๋ณ๋ชฉ ํ์ ์๋ณํ๊ธฐ
RUM ๋ฐ Synthetic ๋ชจ๋ํฐ๋ง ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ฐ์ฅ ์ฌ๊ฐํ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ์์ญ์ ์๋ณํ์ธ์. LCP ๋ฐ FID์ ๊ฐ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ฅ ํฐ ์ํฅ์ ๋ฏธ์น๋ ์งํ์ ์ง์คํ์ธ์. ๋ฐ์ดํฐ๋ฅผ ์ง์ญ, ๊ธฐ๊ธฐ ์ ํ, ๋คํธ์ํฌ ์กฐ๊ฑด๋ณ๋ก ๋ถ๋ฅํ์ฌ ํน์ ์์น์ ๋ณ๋ชฉ ํ์์ ์ฐพ์๋ด์ธ์. ์๋ฅผ ๋ค์ด, ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ๋๋ฆฐ ์ง์ญ์ ์ฌ์ฉ์์๊ฒ๋ ์ด๋ฏธ์ง ๋ก๋ฉ์ด ์ฃผ๋ ๋ณ๋ชฉ ํ์์์ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค.
2. ์ต์ ํ ์์ ์ ์ฐ์ ์์ ์ ํ๊ธฐ
๋ชจ๋ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ด ๋์ผํ ์ค์๋๋ฅผ ๊ฐ์ง๋ ์์ต๋๋ค. ๋ฌธ์ ์ ์ํฅ๊ณผ ๊ตฌํ์ ์ฉ์ด์ฑ์ ๊ธฐ์ค์ผ๋ก ์ต์ ํ ์์ ์ ์ฐ์ ์์๋ฅผ ์ ํ์ธ์. ๊ฐ์ฅ ํฐ ํจ๊ณผ๋ฅผ ๋ผ ์ ์๋ ์ต์ ํ์ ์ง์คํ์ธ์. ์ํฅ๊ณผ ๋ ธ๋ ฅ์ ๊ธฐ์ค์ผ๋ก ์ต์ ํ ๊ธฐํ์ ์์๋ฅผ ๋งค๊ธฐ๋ ์ฐ์ ์์ ๋งคํธ๋ฆญ์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณด์ธ์.
3. ์ต์ ํ ๊ธฐ๋ฒ ๊ตฌํํ๊ธฐ
ํน์ ๋ฌธ์ ์ ๋ฐ๋ผ ์ฌ์ฉํ ์ ์๋ ๋ค์ํ ์๋ฐ์คํฌ๋ฆฝํธ ์ต์ ํ ๊ธฐ๋ฒ์ด ์์ต๋๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ช ๊ฐ์ง ๊ธฐ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ฝ๋ ๋ถํ (Code Splitting): ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ํ์ํ ๋ ๋ก๋ํ ์ ์๋ ๋ ์์ ๋ฒ๋ค๋ก ๋๋๋๋ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๊ธฐ ๋ก๋ ์๊ฐ์ ํฌ๊ฒ ์ค์ผ ์ ์์ต๋๋ค. Webpack์ด๋ Parcel๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋ ๋ถํ ์ ๋น๊ต์ ์ฝ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค.
- ํธ๋ฆฌ ์์ดํน(Tree Shaking): ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค์์ ์ฌ์ฉ๋์ง ์๋ ์ฝ๋๋ฅผ ์ ๊ฑฐํฉ๋๋ค. ์ด๋ ๋ฒ๋ค์ ํฌ๊ธฐ๋ฅผ ํฌ๊ฒ ์ค์ด๊ณ ๋ก๋ ์๊ฐ์ ๊ฐ์ ํ ์ ์์ต๋๋ค. Webpack ๋ฐ ๊ธฐํ ์ต์ ๋ฒ๋ค๋ฌ๋ ํธ๋ฆฌ ์์ดํน์ ์ง์ํฉ๋๋ค.
- ์ต์ํ ๋ฐ ์์ถ: ๋ถํ์ํ ๋ฌธ์๋ฅผ ์ ๊ฑฐํ๊ณ ์ฝ๋๋ฅผ ์์ถํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ํฌ๊ธฐ๋ฅผ ์ค์ ๋๋ค. ์ต์ํ๋ฅผ ์ํด UglifyJS๋ Terser์ ๊ฐ์ ๋๊ตฌ๋ฅผ, ์์ถ์ ์ํด Gzip์ด๋ Brotli๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ด๋ฏธ์ง ์ต์ ํ: ์ด๋ฏธ์ง๋ฅผ ์์ถํ๊ณ , ์ ์ ํ ํฌ๊ธฐ๋ก ์กฐ์ ํ๋ฉฐ, WebP์ ๊ฐ์ ์ต์ ์ด๋ฏธ์ง ํ์์ ์ฌ์ฉํ์ฌ ์ต์ ํํฉ๋๋ค. ImageOptim์ด๋ TinyPNG์ ๊ฐ์ ๋๊ตฌ๊ฐ ์ด๋ฏธ์ง ์ต์ ํ์ ๋์์ด ๋ ์ ์์ต๋๋ค. ์ฌ์ฉ์์ ๊ธฐ๊ธฐ์ ํ๋ฉด ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ค๋ฅธ ํฌ๊ธฐ์ ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ๋ฐ์ํ ์ด๋ฏธ์ง(`srcset` ์์ฑ) ์ฌ์ฉ์ ๊ณ ๋ คํ์ธ์.
- ์ง์ฐ ๋ก๋ฉ(Lazy Loading): ์ค์ํ์ง ์์ ๋ฆฌ์์ค์ ๋ก๋ฉ์ ํ์ํ ๋๊น์ง ์ง์ฐ์ํต๋๋ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๊ธฐ ๋ก๋ ์๊ฐ์ ๊ฐ์ ํ ์ ์์ต๋๋ค. ํ๋ฉด์ ์ฆ์ ๋ณด์ด์ง ์๋ ์ด๋ฏธ์ง, ๋น๋์ค ๋ฐ ๊ธฐํ ๋ฆฌ์์ค์ ๋ํด ์ง์ฐ ๋ก๋ฉ์ ๊ตฌํํ์ธ์.
- ์บ์ฑ: ๋ธ๋ผ์ฐ์ ์บ์ฑ์ ํ์ฉํ์ฌ HTTP ์์ฒญ ์๋ฅผ ์ค์ด๊ณ ๋ก๋ ์๊ฐ์ ๊ฐ์ ํ์ธ์. ์ ์ ์์ฐ์ ๋ํด ์ ์ ํ ์บ์ ํค๋๋ฅผ ๊ตฌ์ฑํ์ธ์. ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN)๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์ ๋ ๊ฐ๊น์ด ๊ณณ์ ์์ฐ์ ์บ์ํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์.
- ๋๋ฐ์ด์ฑ ๋ฐ ์ค๋กํ๋ง: ํน์ ํจ์๊ฐ ์คํ๋๋ ๋น์จ์ ์ ํํฉ๋๋ค. ์ด๋ ๊ณผ๋ํ ํจ์ ํธ์ถ๋ก ์ธํ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ์คํฌ๋กค ์ด๋ฒคํธ๋ ๋ฆฌ์ฌ์ด์ฆ ์ด๋ฒคํธ์ ๊ฐ์ด ์์ฃผ ํธ๋ฆฌ๊ฑฐ๋๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ๋๋ฐ์ด์ฑ๊ณผ ์ค๋กํ๋ง์ ์ฌ์ฉํ์ธ์.
- ๊ฐ์ํ(Virtualization): ํฐ ๋ชฉ๋ก์ด๋ ํ ์ด๋ธ์ ๋ ๋๋งํ ๋ ๊ฐ์ํ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณด์ด๋ ํญ๋ชฉ๋ง ๋ ๋๋งํฉ๋๋ค. ์ด๋ ํนํ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. react-virtualized๋ react-window์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ React ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ๊ฐ์ํ ์ปดํฌ๋ํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์น ์์ปค(Web Workers): ๊ณ์ฐ๋์ด ๋ง์ ์์ ์ ๋ฉ์ธ ์ค๋ ๋์์ ๋ถ๋ฆฌํ์ฌ UI ์ฐจ๋จ์ ๋ฐฉ์งํฉ๋๋ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ด๋ฏธ์ง ์ฒ๋ฆฌ, ๋ฐ์ดํฐ ๋ถ์, ๋ณต์กํ ๊ณ์ฐ๊ณผ ๊ฐ์ ์์ ์ ์น ์์ปค๋ฅผ ์ฌ์ฉํ์ธ์.
- ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฐฉ์ง: ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ ์คํ๊ฒ ๊ด๋ฆฌํ์ธ์. Chrome DevTools์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์๋ณํ๊ณ ์์ ํ์ธ์. ํด๋ก์ , ์ด๋ฒคํธ ๋ฆฌ์ค๋, ํ์ด๋จธ ๋ฑ์ ์ข ์ข ๋ฉ๋ชจ๋ฆฌ ๋์์ ์์ธ์ด ๋ ์ ์์ผ๋ฏ๋ก ์ฃผ์ํด์ผ ํฉ๋๋ค.
4. ์ธก์ ๋ฐ ๋ฐ๋ณต
์ต์ ํ๋ฅผ ๊ตฌํํ ํ์๋ RUM ๋ฐ Synthetic ๋ชจ๋ํฐ๋ง ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ทธ ์ํฅ์ ์ธก์ ํ์ธ์. ์ต์ ํ๊ฐ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ด์ง ๋ชปํ๋ฉด, ๋ฐ๋ณตํ์ฌ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ ์๋ํ์ธ์. ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๊ณ ํ์์ ๋ฐ๋ผ ์กฐ์ ํ์ธ์. A/B ํ ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ์ต์ ํ ๊ธฐ๋ฒ์ ์ฑ๋ฅ์ ๋น๊ตํ ์ ์์ต๋๋ค.
๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ์ํ ๊ณ ๊ธ ์ต์ ํ ์ ๋ต
๊ธฐ๋ณธ์ ์ธ ์ต์ ํ ๊ธฐ๋ฒ์ ๋์ด, ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํ ์ฑ๋ฅ ํฅ์์ ์ํด ๋ค์๊ณผ ๊ฐ์ ๊ณ ๊ธ ์ ๋ต์ ๊ณ ๋ คํด ๋ณด์ธ์:
- ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ (CDN): CDN์ ์ฌ์ฉํ์ฌ ์ ์ ์์ฐ์ ์ฌ์ฉ์์ ๋ ๊ฐ๊น์ด ๊ณณ์ ์บ์ํ์ธ์. ์ด๋ ๋คํธ์ํฌ ์ง์ฐ ์๊ฐ์ ํฌ๊ฒ ์ค์ด๊ณ ๋ก๋ ์๊ฐ์ ๊ฐ์ ํ ์ ์์ต๋๋ค. ๋ชจ๋ ์ง์ญ์ ์ฌ์ฉ์์๊ฒ ์ต์ ์ ์ฑ๋ฅ์ ๋ณด์ฅํ๊ธฐ ์ํด ๊ธ๋ก๋ฒ ์๋ฒ ๋คํธ์ํฌ๋ฅผ ๊ฐ์ถ CDN์ ์ ํํ์ธ์. ์ธ๊ธฐ ์๋ CDN ์ ๊ณต์ ์ฒด๋ก๋ Cloudflare, Akamai, Amazon CloudFront๊ฐ ์์ต๋๋ค.
- ์ฃ์ง ์ปดํจํ (Edge Computing): ๊ณ์ฐ์ ๋คํธ์ํฌ์ ์ฃ์ง(๊ฐ์ฅ์๋ฆฌ)๋ก ์ด๋์์ผ ์ง์ฐ ์๊ฐ์ ์ค์ ๋๋ค. ์ด๋ ์ค์๊ฐ ์ฒ๋ฆฌ๊ฐ ํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ํนํ ์ ์ฉํ ์ ์์ต๋๋ค. Cloudflare Workers๋ AWS Lambda@Edge์ ๊ฐ์ ์ฃ์ง ์ปดํจํ ํ๋ซํผ ์ฌ์ฉ์ ๊ณ ๋ คํด ๋ณด์ธ์.
- ์๋น์ค ์์ปค(Service Workers): ์๋น์ค ์์ปค๋ฅผ ์ฌ์ฉํ์ฌ ์์ฐ์ ์คํ๋ผ์ธ์ผ๋ก ์บ์ํ๊ณ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ์ข์ง ์์ ์ง์ญ์์๋ ๋ ์์ ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ์ธ์. ์๋น์ค ์์ปค๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ๋๊ธฐํ ๋ฐ ํธ์ ์๋ฆผ์ ๊ตฌํํ๋ ๋ฐ์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ ์ํ ๋ก๋ฉ(Adaptive Loading): ์ฌ์ฉ์์ ๋คํธ์ํฌ ์ํ์ ๊ธฐ๊ธฐ ์ฑ๋ฅ์ ๋ฐ๋ผ ๋ก๋๋๋ ๋ฆฌ์์ค๋ฅผ ๋์ ์ผ๋ก ์กฐ์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋๋ฆฐ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ์ฌ์ฉํ๋ ์ฌ์ฉ์์๊ฒ๋ ์ ํด์๋ ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. Network Information API๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์ ๋คํธ์ํฌ ์๋๋ฅผ ๊ฐ์งํ๊ณ ๊ทธ์ ๋ฐ๋ผ ๋ก๋ฉ ์ ๋ต์ ์กฐ์ ํ์ธ์.
- ๋ฆฌ์์ค ํํธ(Resource Hints): `preconnect`, `dns-prefetch`, `preload`, `prefetch`์ ๊ฐ์ ๋ฆฌ์์ค ํํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ์ ๋ฏธ๋ฆฌ ๋ก๋ํ ๋ฆฌ์์ค๋ฅผ ์๋ ค์ฃผ์ธ์. ์ด๋ ์ง์ฐ ์๊ฐ์ ์ค์ด๊ณ ๋ฆฌ์์ค ๋ก๋ฉ์ ์ต์ ํํ์ฌ ๋ก๋ ์๊ฐ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ๊ณ ์ต์ ํ ํ๋ ์์ํฌ๋ฅผ ๊ตฌํํ๋ ๊ฒ์ ํ์ ์ ์ธ ์ ๊ทผ์ด ํ์ํ ์ง์์ ์ธ ๊ณผ์ ์ ๋๋ค. ํต์ฌ ์ฑ๋ฅ ์งํ์ ์ง์คํ๊ณ , ์ฌ๋ฐ๋ฅธ ๋๊ตฌ๋ฅผ ํ์ฉํ๋ฉฐ, ํจ๊ณผ์ ์ธ ์ต์ ํ ๊ธฐ๋ฒ์ ๊ตฌํํจ์ผ๋ก์จ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํค๊ณ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๊ณ , ์ต์ ํ ๋ ธ๋ ฅ์ ๋ฐ๋ณตํ๋ฉฐ, ์ฌ์ฉ์์ ๋ณํํ๋ ์๊ตฌ์ ์น ํ๊ฒฝ์ ๋ณํ์ ๋ง์ถฐ ์ ๋ต์ ์กฐ์ ํ๋ ๊ฒ์ ์์ง ๋ง์ธ์.